<?php

use App\Exceptions\ApiException;
use App\Models\Buy;
use App\Models\Sell;
use App\Models\System;
use App\Models\User;
use Carbon\Carbon;

function da($collection)
{
  dd($collection->toArray());
}

function success($data = null, $footer = null)
{
  if ($data instanceof \Illuminate\Pagination\LengthAwarePaginator) {
    $data = [
      'list' => $data->items(),
      'total' => $data->total()
    ];
  }
  if ($footer) {
    $data['footer'] = $footer;
  }
  return [
    'code' => 1,
    'msg' => 'ok',
    'data' => $data
  ];
}

function fail($msg, $code = -1)
{
  throw new ApiException($msg, $code);
}

function forbidden()
{
  throw new ApiException('未授权', -3);
}

function getRange($arr, $format = 'Y-m-d')
{
  [$start, $end] = $arr;
  $start = Carbon::create(json_decode($start))->format(($format));
  $end = Carbon::create(json_decode($end))->addDay()->format(($format));
  return [$start, $end];
}

// function member()
// {
//   return auth()->user()->member;
// }
function seller()
{
  $user = auth()->user();
  return $user->pid ? $user->parent : $user;
}
function sellerId()
{
  $user = auth()->user();
  return $user->pid ?? $user->id;
}
// function agency()
// {
//   return auth()->user()->agency;
// }
function makeCode()
{
  do {
    $str = \Str::random(6);
    $str = \Str::upper($str);
    $exists = User::where('code', $str)->exists();
  } while ($exists);
  return $str;
}

function sys($key)
{
  return System::where('key', $key)->value('value');
}

function takingCount()
{
  $m = sys('member_buy_minutes');
  $date = (new Carbon())->subMinutes($m);
  $count = Buy::where('state', 'took')
    ->where('took_at', '<', $date->format('Y-m-d H:i:s'))
    ->count();

  return $count;
}

function sellingCount()
{
  return Sell::whereIn('state', ['checking', 'locking', 'pending'])->count();
}

function starMobile($mobile)
{
  return substr($mobile, 0, 3) . '****' . substr($mobile, 7);
}

/**
 * [verifyPhone description] 效验手机号码合法性
 * @param  [type] $phone [description] 手机号
 * @return [type]        [description]
 */
function Verify_Phone($Phone = null){
    /**
     * 移动：134、135、136、137、138、139、150、151、152、157、158、159、182、183、184、187、188、178(4G)、147(上网卡);
     * 联通：130、131、132、155、156、185、186、176(4G)、145(上网卡);
     * 电信：133、153、180、181、189 、177(4G);
     * 卫星通信：1349;
     * 虚拟运营商：170;
     * 130、131、132、133、134、135、136、137、138、139
     * 145、147
     * 150、151、152、153、155、156、157、158、159
     * 170、176、177、178
     * 180、181、182、183、184、185、186、187、188、189
     */
    $ret = false;
    //判断是否有值
    if($Phone){
        $Phone_preg = '#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#';
        //判断是否是正确手机号
        if(preg_match($Phone_preg,$Phone)){
            $ret = true;
        }
    }
    return $ret;
}